package com.jzy.common.utils;


/**
 * 
 * 类描述： 请求返回数据
 * 创建者： jiaozy
 * 项目名称： ssm
 * 创建时间： 2018年12月21日 上午10:17:45
 * Email：jzy19890914@gmail.com
 */
public class AjaxResult<T> {

	private static final long serialVersionUID = 1L;
	
	/**
	 * 响应码
	 */
	private int code;
	
	/**
	 * 响应信息
	 */
	private String msg;
	
	/**
	 * 响应数据
	 */
	private T data = null;
	
	/**
	 * 分页信息
	 */
	private PageUtil page;
	
	public AjaxResult() {
	}
	
	/**
	 * 
	 * @param code	响应码
	 * @param msg	响应信息
	 * @param page	分页信息
	 * @param data	响应数据
	 */
	public AjaxResult(int code,String msg,PageUtil page,T data) {
		super();
		this.code=code;
		this.msg=msg;
		this.data=data;
		this.page=page;
	}
	
	/**
	 * 
	 * @param code	响应码
	 * @param msg	响应信息
	 */
	public AjaxResult(int code,String msg) {
		this(code,msg,null,null);
	}
	
	/**
	 * 
	 * @param code	响应码
	 * @param msg	响应信息
	 * @param page	分页信息
	 */
	public AjaxResult(int code,String msg,PageUtil page) {
		this(code,msg,page,null);
	}
	
	/**
	 * 
	 * @param code	响应码
	 * @param msg	响应信息
	 * @param data	响应数据
	 */
	public AjaxResult(int code,String msg,T data) {
		this(code,msg,null,data);
	}
	
	/**
	 * 
	 * 方法描述 : 成功返回
	 * 创建者：jzy 
	 * 项目名称： ssm
	 * 类名： ResponseUtil.java
	 * 创建时间： 2018年12月21日 下午4:20:57
	 * Email：jzy19890914@gmail.com
	 * @return ResponseUtil<Object>
	 */
	public static AjaxResult<Object> sucess () {
		return new AjaxResult<Object>(AjaxResultEnum.SUCCESS.getCode(),AjaxResultEnum.SUCCESS.getMsg());
	}
	
	/**
	 * 
	 * 方法描述 : 成功返回
	 * 创建者：jzy 
	 * 项目名称： ssm
	 * 类名： ResponseUtil.java
	 * 创建时间： 2018年12月21日 下午4:22:02
	 * Email：jzy19890914@gmail.com
	 * @param page	分页信息
	 * @return ResponseUtil<Object>
	 */
	public static AjaxResult<Object> sucess (PageUtil page) {
		return new AjaxResult<Object>(AjaxResultEnum.SUCCESS.getCode(),AjaxResultEnum.SUCCESS.getMsg(),page);
	}
	
	/**
	 * 
	 * 方法描述 : 成功返回
	 * 创建者：jzy 
	 * 项目名称： ssm
	 * 类名： ResponseUtil.java
	 * 创建时间： 2018年12月21日 下午4:22:41
	 * Email：jzy19890914@gmail.com
	 * @param msg	响应信息
	 * @return ResponseUtil<Object>
	 */
	public static AjaxResult<Object> sucess (String msg) {
		return new AjaxResult<Object>(AjaxResultEnum.SUCCESS.getCode(),msg);
	}
	
	/**
	 * 
	 * 方法描述 : 成功返回
	 * 创建者：jzy 
	 * 项目名称： ssm
	 * 类名： ResponseUtil.java
	 * 创建时间： 2018年12月21日 下午4:24:53
	 * Email：jzy19890914@gmail.com
	 * @param msg	响应信息
	 * @param page	分页信息
	 * @return ResponseUtil<Object>
	 */
	public static AjaxResult<Object> sucess (String msg,PageUtil page) {
		return new AjaxResult<Object>(AjaxResultEnum.SUCCESS.getCode(),msg,page);
	}
	
	/**
	 * 
	 * 方法描述 : 失败返回
	 * 创建者：jzy 
	 * 项目名称： ssm
	 * 类名： ResponseUtil.java
	 * 创建时间： 2018年12月21日 下午4:20:57
	 * Email：jzy19890914@gmail.com
	 * @return ResponseUtil<Object>
	 */
	public static AjaxResult<Object> failure () {
		return new AjaxResult<Object>(AjaxResultEnum.FAIL.getCode(),AjaxResultEnum.FAIL.getMsg());
	}
	
	/**
	 * 
	 * 方法描述 : 失败返回
	 * 创建者：jzy 
	 * 项目名称： ssm
	 * 类名： ResponseUtil.java
	 * 创建时间： 2018年12月21日 下午4:26:03
	 * Email：jzy19890914@gmail.com
	 * @param page	分页信息
	 * @return ResponseUtil<Object>
	 */
	public static AjaxResult<Object> failure (PageUtil page) {
		return new AjaxResult<Object>(AjaxResultEnum.FAIL.getCode(),AjaxResultEnum.FAIL.getMsg(),page);
	}
	
	/**
	 * 
	 * 方法描述 : 失败返回
	 * 创建者：jzy 
	 * 项目名称： ssm
	 * 类名： ResponseUtil.java
	 * 创建时间： 2018年12月21日 下午4:26:19
	 * Email：jzy19890914@gmail.com
	 * @param msg	响应信息
	 * @return ResponseUtil<Object>
	 */
	public static AjaxResult<Object> failure (String msg) {
		return new AjaxResult<Object>(AjaxResultEnum.FAIL.getCode(),msg);
	}
	
	/**
	 * 
	 * 方法描述 : 失败返回
	 * 创建者：jzy 
	 * 项目名称： ssm
	 * 类名： ResponseUtil.java
	 * 创建时间： 2018年12月21日 下午4:26:40
	 * Email：jzy19890914@gmail.com
	 * @param msg	响应信息
	 * @param page	分页信息
	 * @return ResponseUtil<Object>
	 */
	public static AjaxResult<Object> failure (String msg,PageUtil page) {
		return new AjaxResult<Object>(AjaxResultEnum.FAIL.getCode(),msg,page);
	}
	
	
	
	public int getCode() {
		return code;
	}

	public AjaxResult<T> setCode(int code) {
		this.code = code;
		return this;
	}

	public String getMsg() {
		return msg;
	}

	public AjaxResult<T> setMsg(String msg) {
		this.msg = msg;
		return this;
	}

	public T getData() {
		return data;
	}

	public AjaxResult<T> setData(T data) {
		this.data = data;
		return this;
	}

	public PageUtil getPage() {
		return page;
	}

	public AjaxResult<T> setPage(PageUtil page) {
		this.page = page;
		return this;
	}
	
}
